package kr.co.cherryt.common;

import java.util.Iterator;
import java.util.Map;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class PreferenceWrapper {
	//static String PREF_NAME = "kr.co.mokey";

	
	static protected SharedPreferences getPref(Context c){
		//return c.getSharedPreferences(PREF_NAME, 0);
		return PreferenceManager.getDefaultSharedPreferences(c);
	}

	static protected SharedPreferences.Editor getEidtor(Context c){
		return getPref(c).edit();
		
	}
	
	////////////////////////////////////////////////////////////////////////////
	// int data를 위한 setter, getter
	////////////////////////////////////////////////////////////////////////////
	public static boolean setPreferenceInt(Context c, String szName, int nData){

		SharedPreferences.Editor edit = getEidtor(c);
		edit.putInt(szName, nData);
		return edit.commit();
	}
	
	public static int getPreferenceInt(Context c, String szName, int nDefault){

		return getPref(c).getInt(szName, nDefault);
	}
	

	////////////////////////////////////////////////////////////////////////////
	// long data를 위한 setter, getter
	////////////////////////////////////////////////////////////////////////////
	public static boolean setPreferenceLong(Context c, String szName, long nData){

		SharedPreferences.Editor edit = getEidtor(c);
		edit.putLong(szName, nData);
		return edit.commit();
	}
	
	public static long getPreferenceLong(Context c, String szName, long nDefault){

		return getPref(c).getLong(szName, nDefault);
	}
	

	
	
	
	
	/**
	 * 여러개의 데이터를 동시에 저장하기 위한 함수 (개별 저장에 비해 속도 증가!!)
	 * @param c - context
	 * @param map
	 * @return
	 */
	public static boolean setPreferenceString(Context c, Map<String, String> map){

		SharedPreferences.Editor edit = getEidtor(c);
		
	    Iterator<String> iterator = map.keySet().iterator();
	    while (iterator.hasNext()) {
	        String szKey = (String) iterator.next();
	        String szValue = map.get(szKey);
	        
	        // 키는 없으면 안되므로 Empty 체크하자, Value는 Emtpy를 원할 수도 있다!!
	        if(Utility.IsEmpty(szKey) == false){
		        edit.putString(szKey, szValue);
	        }
	    }
	    return edit.commit();
	}

	
	////////////////////////////////////////////////////////////////////////////
	// String data를 위한 setter, getter
	////////////////////////////////////////////////////////////////////////////
	public static boolean setPreferenceString(Context c, String szName, String szData){

		SharedPreferences.Editor edit = getEidtor(c);
		edit.putString(szName, szData);
		return edit.commit();
	}
	
	public static String getPreferenceString(Context c, String szName, String szDefault){

		return getPref(c).getString(szName, szDefault);
	}
	

	////////////////////////////////////////////////////////////////////////////
	// Boolean data를 위한 setter, getter
	////////////////////////////////////////////////////////////////////////////
	public static boolean setPreferenceBoolean(Context c, String szName, boolean bData){

		SharedPreferences.Editor edit = getEidtor(c);
		edit.putBoolean(szName, bData);
		return edit.commit();
	}
	
	public static boolean getPreferenceBoolean(Context c, String szName, boolean bDefault){

		// 리턴값은 성공, 실패가 아니라 Preference에서 가져온 data
		return getPref(c).getBoolean(szName, bDefault);
	}
}
